<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Communicating Sequential Processes</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Communicating_Sequential_Processes"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Communicating_Sequential_Processes rootpage-Communicating_Sequential_Processes skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Communicating Sequential Processes</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p><b>Communicating Sequential Processes</b> (<b>CSP</b>) ist eine von <a href="Tony_Hoare" title="Tony Hoare">Tony Hoare</a> an der <a href="Universit%C3%A4t_Oxford" class="mw-redirect" title="Universität Oxford">Universität Oxford</a> entwickelte <a href="Prozessalgebra" class="mw-redirect" title="Prozessalgebra">Prozessalgebra</a> zur Beschreibung von <a href="Interaktion" title="Interaktion">Interaktion</a> zwischen kommunizierenden <a href="Prozess_(Computer)" class="mw-redirect" title="Prozess (Computer)">Prozessen</a>. Die Idee wurde als <a href="Imperative_Sprache" class="mw-redirect" title="Imperative Sprache">imperative Sprache</a> 1978 von Tony Hoare vorgestellt, dann von ihm zu einer formalen Algebra ausgebaut und 1985 mit der Veröffentlichung des Buchs mit dem gleichnamigen Titel <i>Communicating Sequential Processes</i> berühmt. Dieses Buch war 2003 laut <a href="CiteSeer" class="mw-redirect" title="CiteSeer">CiteSeer</a> bereits das dritthäufigst zitierte Werk der <a href="Informatik" title="Informatik">Informatik</a>.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p>Als Abgrenzung zur ursprünglichen imperativen Sprache CSP wird die Prozessalgebra teilweise auch als <b>Theoretical Communicating Sequential Processes</b> (<b>TCSP</b>) bezeichnet.
</p>
<div class="mw-heading mw-heading2"><h2 id="Anwendungen">Anwendungen</h2></div>
<ul><li>Die <a href="Programmiersprache" title="Programmiersprache">Programmiersprachen</a> <a href="Go_(Programmiersprache)" title="Go (Programmiersprache)">Go</a><sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> und <a href="Occam" title="Occam">Occam</a> beinhalten praktische <a href="Implementierung" title="Implementierung">Implementierungen</a> der CSP.</li>
<li>JCSP (Communicating Sequential Processes for Java) ist die Verbindung von CSP- und Occam-Konzepten in einer <a href="Java_(Programmiersprache)" title="Java (Programmiersprache)">Java</a>-<a href="Application_Programming_Interface" class="mw-redirect" title="Application Programming Interface">API</a>.</li>
<li>Mit C++CSP2 ist eine entsprechende <a href="Implementierung" title="Implementierung">Implementierung</a> für <a href="C%2B%2B" title="C++">C++</a> verfügbar.</li>
<li>das <a href="Message_Passing_Interface" title="Message Passing Interface">Message Passing Interface</a></li>
<li>die <a href="Parallele_Virtuelle_Maschine" title="Parallele Virtuelle Maschine">Parallel Virtual Machine</a>.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Auszug_aus_der_Syntax_und_Semantik">Auszug aus der Syntax und Semantik</h2></div>
<ul><li>CSP verwendet Großbuchstaben für <a href="Automat_(Informatik)" title="Automat (Informatik)">Zustände des Automaten</a> sowie Kleinbuchstaben für <a href="Ereignis" title="Ereignis">Ereignisse</a>. Die durch Ereignisse ausgelösten <a href="Transitionssystem" title="Transitionssystem">Zustandsübergänge</a> werden durch einen Pfeil (→) gekennzeichnet.
<ul><li><code>(x → B)</code> Auf das Ereignis x folgt der Zustand B</li>
<li><code>(x → y → B)</code> Auf die Ereignisfolge x und dann y folgt Zustand B</li></ul></li></ul>
<ul><li>In CSP werden bedingte Ereignisse durch Angabe des Auswahloperators | definiert.
<ul><li><code>(x → A | y → B)</code> Wenn Ereignis x, dann Zustand A. Wenn Ereignis y, dann Zustand B</li></ul></li></ul>
<ul><li>Die Menge der Zustände und Ereignisse, die ein über CSP definierter Automat akzeptiert, wird durch das <a href="Alphabet" title="Alphabet">Alphabet</a> αP angegeben. Jeder Automat enthält einen zusätzlichen Zustand STOP in αP, aus dem ein weiterer Zustandsübergang per Definition nicht mehr erlaubt ist.</li></ul>
<ul><li>Sequentielle <a href="Komposition_(Mathematik)" title="Komposition (Mathematik)">Komposition</a> wird durch das Einführen von Zwischenzuständen ermöglicht.
<ul><li><code>P = (x → A), A = (y → B)</code> ist äquivalent zu</li>
<li><code>P = (x → y → B)</code></li></ul></li></ul>
<ul><li>Die Parallelschaltung von Prozessen, die dieser Prozessalgebra den Namen gab, wird durch die Angabe des Symbols || erreicht.
<ul><li><code>P = (a → (b → P | x → b → P))</code> mit αP = {a, b, x}</li>
<li><code>Q = (a → b → Q | y → b → Q)</code> mit αQ = {a, b, y}</li>
<li><code>P || Q</code> akzeptiert alle Zeichenfolgen {ab, axb, yb} sowie beliebige sequentielle Kombinationen</li></ul></li></ul>
<ul><li><a href="Rekursion" title="Rekursion">Rekursionen</a> sind möglich.
<ul><li><code>P = (x → y → P)</code> generiert die unendliche Abfolge der Ereignisse xyxyxy…</li></ul></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.usingcsp.com/">Elektronische Version des Originalbuchs zu CSP von Tony Hoare</a></li>
<li><a rel="nofollow" class="external text" href="http://www.cs.kent.ac.uk/projects/ofa/c++csp">C++CSP2 der University of Kent</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://citeseer.ist.psu.edu/articles.html">CiteSeer Statistik</a></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://godoc.org/github.com/thomas11/csp"><i>Google Go package csp.</i></a><span class="Abrufdatum"> Abgerufen am 26. Juni 2019</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3ACommunicating+Sequential+Processes&rft.title=Google+Go+package+csp&rft.description=Google+Go+package+csp&rft.identifier=https%3A%2F%2Fgodoc.org%2Fgithub.com%2Fthomas11%2Fcsp&rft.date=&rft.language=en"> </span></span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2024-11-30" href="https://de.wikipedia.org/wiki/?title=Communicating_Sequential_Processes&oldid=250839395">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>